<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  
  <title>【转】PHP发展路径 | 程序小工  | Just do it!</title>
  <meta name="description" content="遇见更好的自己~" />
  <meta name="keywords" content="" />
  <meta name="HandheldFriendly" content="True" />
  <meta name="apple-mobile-web-app-capable" content="yes">
  <link rel="shortcut icon" href="/">
  <link rel="alternate" href="/atom.xml" title="程序小工  | Just do it!">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="按照了解的很多 PHP/LNMP 程序员的发展轨迹，结合个人经验体会，抽象出很多程序员对未来的迷漫，特别对技术学习的盲目和慌乱，简单梳理了这个每个阶段 PHP 程序员的技术要求，来帮助很多 PHP 程序做对照设定学习成长目标。">
<meta name="keywords" content="路径">
<meta property="og:type" content="article">
<meta property="og:title" content="【转】PHP发展路径">
<meta property="og:url" content="http://blog.i2arch.tech/2018/05/07/php-route/index.html">
<meta property="og:site_name" content="程序小工  | Just do it!">
<meta property="og:description" content="按照了解的很多 PHP/LNMP 程序员的发展轨迹，结合个人经验体会，抽象出很多程序员对未来的迷漫，特别对技术学习的盲目和慌乱，简单梳理了这个每个阶段 PHP 程序员的技术要求，来帮助很多 PHP 程序做对照设定学习成长目标。">
<meta property="og:locale" content="zh-Hans">
<meta property="og:updated_time" content="2018-08-14T07:59:24.562Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="【转】PHP发展路径">
<meta name="twitter:description" content="按照了解的很多 PHP/LNMP 程序员的发展轨迹，结合个人经验体会，抽象出很多程序员对未来的迷漫，特别对技术学习的盲目和慌乱，简单梳理了这个每个阶段 PHP 程序员的技术要求，来帮助很多 PHP 程序做对照设定学习成长目标。">
    
  <link href="https://fonts.googleapis.com/css?family=Inconsolata|Titillium+Web" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
  <link href='//cdn.bootcss.com/node-waves/0.7.5/waves.min.css' rel='stylesheet'>
  <link rel="stylesheet" href="/style.css">
  <script>
    function setLoadingBarProgress(num) {
      document.getElementById('loading-bar').style.width=num+"%";
    }
  </script>
</head>

<body>
  <div id="loading-bar-wrapper">
  <div id="loading-bar"></div>
</div>


  <script>setLoadingBarProgress(20)</script>
  <header class="l_header">
	<div class='wrapper'>
		<div class="nav-main container container--flex">
			<a class="logo flat-box" href='/' >
				程序小工  | Just do it!
			</a>
			<div class='menu'>
				<ul class='h-list'>
					
						<li>
							<a class='flat-box nav-home' href='/'>
								<i class='icon icon-list2'></i>
								首页
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-archives' href='/archives'>
								<i class='icon icon-bookmark'></i>
								归档
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-about' href='/about'>
								<i class='icon icon-user'></i>
								关于
							</a>
						</li>
					
				</ul>
				<div class='underline'></div>
			</div>
			
				<div class="m_search">
					<form name="searchform" class="form u-search-form">
						<input type="text" class="input u-search-input" placeholder="Search" />
						<span class="icon icon-search"></span>
					</form>
				</div>
			
			<ul class='switcher h-list'>
				
					<li class='s-search'><a href='javascript:void(0)'><span class="icon icon-search flat-box"></span></a></li>
				
				<li class='s-menu'><a href='javascript:void(0)'><span class="icon icon-menu flat-box"></span></a></li>
			</ul>
		</div>

		<div class='nav-sub container container--flex'>
			<a class="logo" class="flat-box" href='javascript:void(0)'>
				Word of Forks
			</a>

			<ul class='switcher h-list'>
				<li class='s-comment'><a href='javascript:void(0)'><span class="icon icon-chat_bubble_outline flat-box"></span></a></li>
				<li class='s-top'><a href='javascript:void(0)'><span class="icon icon-arrow_upward flat-box"></span></a></li>
				<li class='s-toc'><a href='javascript:void(0)'><span class="icon icon-format_list_numbered flat-box"></span></a></li>
			</ul>
		</div>
	</div>
</header>
<aside class="menu-phone">
	<nav>
		
			<a href="/" class="nav-home nav">
				首页
			</a>
		
			<a href="/archives" class="nav-archives nav">
				归档
			</a>
		
			<a href="/about" class="nav-about nav">
				关于
			</a>
		
	</nav>
</aside>

    <script>setLoadingBarProgress(40);</script>
  <div class="l_body">
    <div class='container clearfix'>
      <!-- 左侧内容 -->
      <div class='l_main'>
        <article id="post-php-route"
  class="post white-box article-type-post"
  itemscope itemprop="blogPost">
	<section class='meta'>

	<h2 class="title">
  	<a href="/2018/05/07/php-route/">
    	【转】PHP发展路径
    </a>
	</h2>

	<div class="pagenav">
		<time>
			2018-05-07
		</time>

		
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>


		
			<div class="pagetags">
				<i class="icon icon-price-tag" style="margin-right: 2px;"></i>
				
					<a href="/tags/路径/" style="margin-left: 3px;">
						路径
					</a>
				
			</div>
			
	</div>
	</section>

	
	<section class="toc-wrapper"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#第一阶段基础阶段基础-php-程序员"><span class="toc-text"> 第一阶段：基础阶段（基础 PHP 程序员）</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1linux"><span class="toc-text"> 1.Linux：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2nginx"><span class="toc-text"> 2.Nginx：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3mysql"><span class="toc-text"> 3.MySQL：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4php"><span class="toc-text"> 4.PHP：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5前端"><span class="toc-text"> 5.前端：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6系统设计"><span class="toc-text"> 6.系统设计：</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#第二阶段提高阶段-中级-php-程序员"><span class="toc-text"> 第二阶段：提高阶段 （中级 PHP 程序员）</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-linux"><span class="toc-text"> 1. Linux:</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-nginx"><span class="toc-text"> 2. Nginx:</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-mysqlmongodb"><span class="toc-text"> 3. MySQL/MongoDB：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4-redismemcached"><span class="toc-text"> 4. Redis/Memcached：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5-php"><span class="toc-text"> 5. PHP：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6-cc"><span class="toc-text"> 6. C/C++：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-前端"><span class="toc-text"> 7. 前端：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#8-系统设计"><span class="toc-text"> 8. 系统设计：</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#第三阶段高级阶段-高级-php-程序员"><span class="toc-text"> 第三阶段：高级阶段 （高级 PHP 程序员）</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-linux-2"><span class="toc-text"> 1. Linux：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-nginx-2"><span class="toc-text"> 2. Nginx:</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-mysqlmongodb-2"><span class="toc-text"> 3. MySQL/MongoDB：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4-redismemcached-2"><span class="toc-text"> 4. Redis/Memcached：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5-php-2"><span class="toc-text"> 5. PHP：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6-cc-2"><span class="toc-text"> 6. C/C++：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-前端-2"><span class="toc-text"> 7. 前端：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#8-其他领域语言学习"><span class="toc-text"> 8. 其他领域语言学习：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#9-其他专业方向学习"><span class="toc-text"> 9. 其他专业方向学习：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#10-系统设计"><span class="toc-text"> 10. 系统设计：</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#第四阶段架构阶段-架构师"><span class="toc-text"> 第四阶段：架构阶段 （架构师）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#第五阶段专家阶段方向领域专家"><span class="toc-text"> 第五阶段：专家阶段（方向领域专家）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#第六阶段科学家阶段"><span class="toc-text"> 第六阶段：科学家阶段</span></a></li></ol></section>
	

	<section class="article typo">
		<div class="article-entry" itemprop="articleBody">
				<span class="zhaiyao">[摘要]</span>
			<p>按照了解的很多 PHP/LNMP 程序员的发展轨迹，结合个人经验体会，抽象出很多程序员对未来的迷漫，特别对技术学习的盲目和慌乱，简单梳理了这个每个阶段 PHP 程序员的技术要求，来帮助很多 PHP 程序做对照设定学习成长目标。</p>
 <a id="more"></a>
<h2 id="第一阶段基础阶段基础-php-程序员"><a class="markdownIt-Anchor" href="#第一阶段基础阶段基础-php-程序员"></a> 第一阶段：基础阶段（基础 PHP 程序员）</h2>
<p><strong>重点</strong>：把 LNMP 搞熟练（核心是安装配置基本操作）</p>
<p><strong>目标</strong>：能够完成基本的 LNMP 系统安装，简单配置维护；能够做基本的简单系统的 PHP 开发；能够在 PHP 中型系统中支持某个 PHP 功能模块的开发。</p>
<p><strong>时间</strong>：完成本阶段的时间因人而异，有的成长快半年一年就过了，成长慢的两三年也有。</p>
<h3 id="1linux"><a class="markdownIt-Anchor" href="#1linux"></a> 1.Linux：</h3>
<p>基本命令、操作、启动、基本服务配置（包括 rpm 安装文件，各种服务配置等）；会写简单的 shell 脚本和 awk/sed 脚本命令等。</p>
<h3 id="2nginx"><a class="markdownIt-Anchor" href="#2nginx"></a> 2.Nginx：</h3>
<p>做到能够安装配置 nginx+php，知道基本的 nginx 核心配置选项，知道 server/fastcgi_pass/access_log 等基础配置，目标是能够让 nginx+php_fpm 顺利工作。</p>
<h3 id="3mysql"><a class="markdownIt-Anchor" href="#3mysql"></a> 3.MySQL：</h3>
<p>会自己搭建 mysql，知道基本的 mysql 配置选项；知道 innodb 和 myisam 的区别，知道针对 InnoDB 和 MyISAM 两个引擎的不同配置选项；知道基本的两个引擎的差异和选择上面的区别；能够纯手工编译搭建一个 MySQL 数据库并且配置好编码等正常稳定运行；核心主旨是能够搭建一个可运行的 MySQL 数据库。</p>
<h3 id="4php"><a class="markdownIt-Anchor" href="#4php"></a> 4.PHP：</h3>
<p>基本语法数组、字符串、数据库、XML、Socket、GD/ImageMgk 图片处理等等；熟悉各种跟 MySQL 操作链接的 api（mysql/mysqli/PDO)，知道各种编码问题的解决；知道常规熟练使用的 PHP 框架（ThinkPHP、Zendframework、Yii、Yaf 等）；了解基本 MVC 的运行机制和为什么这么做，稍微知道不同的 PHP 框架之间的区别；能够快速学习一个 MVC 框架。能够知道开发工程中的文件目录组织，有基本的良好的代码结构和风格，能够完成小系统的开发和中型系统中某个模块的开发工作。</p>
<h3 id="5前端"><a class="markdownIt-Anchor" href="#5前端"></a> 5.前端：</h3>
<p>如果条件时间允许，可以适当学习下 HTML/CSS/JS 等相关知识，知道什么 web 标准，div+css 的 web/wap 页面模式，知道 HTML5 和 HTML4 的区别；了解一些基本的前端只是和 JS 框架（jQuery 之类的）；了解一些基本的 JavaScript 编程知识；（本项不是必须项，如果有时间，稍微了解一下是可以的，不过不建议作为重点，除非个人有强烈兴趣）</p>
<h3 id="6系统设计"><a class="markdownIt-Anchor" href="#6系统设计"></a> 6.系统设计：</h3>
<p>能够完成小型系统的基本设计，包括简单的数据库设计，能够完成基本的：浏览器 -&gt; Nginx+PHP -&gt; 数据库 架构的设计开发工作；能够支撑每天几十万到数百万流量网站的开发维护工作；</p>
<h2 id="第二阶段提高阶段-中级-php-程序员"><a class="markdownIt-Anchor" href="#第二阶段提高阶段-中级-php-程序员"></a> 第二阶段：提高阶段 （中级 PHP 程序员）</h2>
<p><strong>重点</strong>：提高针对 LNMP 的技能，能够更全面的对 LNMP 有熟练的应用。</p>
<p><strong>目标</strong>：能够随时随地搭建好 LNMP 环境，快速完成常规配置；能够追查解决大部分遇到的开发和线上环境的问题；能够独立承担中型系统的构架和开发工作；能够在大型系统中承担某个中型模块的开发工作；</p>
<h3 id="1-linux"><a class="markdownIt-Anchor" href="#1-linux"></a> 1. Linux:</h3>
<p>在第一阶段的基础上面，能够流畅的使用 Shell 脚本来完成很多自动化的工作；awk/sed/perl 也操作的不错，能够完成很多文本处理和数据统计等工作；基本能够安装大部分非特殊的 Linux 程序（包括各种库、包、第三方依赖等等，比如 MongoDB/Redis/Sphinx/Luncene/SVN 之类的）；了解基本的 Linux 服务，知道如何查看 Linux 的性能指标数据，知道基本的 Linux 下面的问题跟踪等。</p>
<h3 id="2-nginx"><a class="markdownIt-Anchor" href="#2-nginx"></a> 2. Nginx:</h3>
<p>在第一阶段的基础上面，了解复杂一些的 Nginx 配置；包括 多核配置、events、proxy<em>pass，sendfile/tcp</em>*配置，知道超时等相关配置和性能影响；知道 nginx 除了 web server，还能够承担代理服务器、反向静态服务器等配置；知道基本的 nginx 配置调优；知道如何配置权限、编译一个 nginx 扩展到 nginx；知道基本的 nginx 运行原理（master/worker 机制，epoll），知道为什么 nginx 性能比 apache 性能好等知识；</p>
<h3 id="3-mysqlmongodb"><a class="markdownIt-Anchor" href="#3-mysqlmongodb"></a> 3. MySQL/MongoDB：</h3>
<p>在第一阶段的基础上面，在 MySQL 开发方面，掌握很多小技巧，包括常规 SQL 优化（group by/order by/rand 优化等）；除了能够搭建 MySQL，还能够冷热备份 MySQL 数据，还知道影响 innodb/myisam 性能的配置选项（比如 key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit 等），也知道这些选项配置成为多少值合适；另外也了解一些特殊的配置选项，比如 知道如何搭建 mysql 主从同步的环境，知道各个 binlog_format 的区别；知道 MySQL 的性能追查，包括 slow_log/explain 等，还能够知道基本的索引建立处理等知识；原理方面了解基本的 MySQL 的架构（Server+存储引擎），知道基本的 InnoDB/MyISAM 索引存储结构和不同（聚簇索引，B 树）；知道基本的 InnoDB 事务处理机制；了解大部分 MySQL 异常情况的处理方案（或者知道哪儿找到处理方案）。条件允许的情况，建议了解一下 NoSQL 的代表 MongoDB 数据库，顺便对比跟 MySQL 的差别，同事能够在合适的应用场景安全谨慎的使用 MongoDB，知道基本的 PHP 与 MongoDB 的结合开发。</p>
<h3 id="4-redismemcached"><a class="markdownIt-Anchor" href="#4-redismemcached"></a> 4. Redis/Memcached：</h3>
<p>在大部分中型系统里面一定会涉及到缓存处理，所以一定要了解基本的缓存；知道 Memcached 和 Redis 的异同和应用场景，能够独立安装 Redis/Memcached，了解 Memcahed 的一些基本特性和限制，比如最大的 value 值，知道 PHP 跟他们的使用结合；Redis 了解基本工作原理和使用，了解常规的数据类型，知道什么场景应用什么类型，了解 Redis 的事务等等。原理部分，能够大概了解 Memcached 的内存结构（slab 机制），redis 就了解常用数据类型底层实现存储结构（SDS/链表/SkipList/HashTable）等等，顺便了解一下 Redis 的事务、RDB、AOF 等机制更好</p>
<h3 id="5-php"><a class="markdownIt-Anchor" href="#5-php"></a> 5. PHP：</h3>
<p>除了第一阶段的能力，安装配置方面能够随意安装 PHP 和各种第三方扩展的编译安装配置；了解 php-fpm 的大部分配置选项和含义（如 max_requests/max_children/request_terminate_timeout 之类的影响性能的配置），知道 mod_php/fastcgi 的区别；在 PHP 方面已经能够熟练各种基础技术，还包括各种深入些的 PHP，包括对 PHP 面向对象的深入理解/SPL/语法层面的特殊特性比如反射之类的；在框架方面已经阅读过最少一个以上常规 PHP MVC 框架的代码了，知道基本 PHP 框架内部实现机制和设计思想；在 PHP 开发中已经能够熟练使用常规的设计模式来应用开发（抽象工厂/单例/观察者/命令链/策略/适配器 等模式）；建议开发自己的 PHP MVC 框架来充分让开发自由化，让自己深入理解 MVC 模式，也让自己能够在业务项目开发里快速升级；熟悉 PHP 的各种代码优化方法，熟悉大部分 PHP 安全方面问题的解决处理；熟悉基本的 PHP 执行的机制原理（Zend 引擎/扩展基本工作机制）；</p>
<h3 id="6-cc"><a class="markdownIt-Anchor" href="#6-cc"></a> 6. C/C++：</h3>
<p>开始涉猎一定的 C/C<ins>语言，能够写基本的 C/C</ins>代码，对基本的 C/C++语法熟悉（指针、数组操作、字符串、常规标准 API）和数据结构（链表、树、哈希、队列）有一定的熟悉下；对 Linux 下面的 C 语言开发有基本的了解概念，会简单的 makefile 文件编写，能够使用简单的 GCC/GDB 的程序编译简单调试工作；对基本的网络编程有大概了解。（本项是为了向更高层次打下基础）</p>
<h3 id="7-前端"><a class="markdownIt-Anchor" href="#7-前端"></a> 7. 前端：</h3>
<p>在第一阶段的基础上面，熟悉基本的 HTTP 协议（协议代码 200/300/400/500，基本的 HTTP 交互头）；条件允许，可以在深入写出稍微优雅的 HTML+CSS+JavaScript，或者能够大致简单使用某些前端框架（jQuery/YUI/ExtJS/RequireJS/BootStrap 之类）；如果条件允许，可以深入学习 JavaScript 编程，比如闭包机制、DOM 处理；再深入些可以读读 jQuery 源码做深入学习。（本项不做重点学习，除非对前端有兴趣）</p>
<h3 id="8-系统设计"><a class="markdownIt-Anchor" href="#8-系统设计"></a> 8. 系统设计：</h3>
<p>能够设计大部分中型系统的网站架构、数据库、基本 PHP 框架选型；性能测试排查处理等；能够完成类似：浏览器 -&gt; CDN(Squid) -&gt; Nginx+PHP -&gt; 缓存 -&gt; 数据库 结构网站的基本设计开发维护；能够支撑每天数百万到千万流量基本网站的开发维护工作；</p>
<h2 id="第三阶段高级阶段-高级-php-程序员"><a class="markdownIt-Anchor" href="#第三阶段高级阶段-高级-php-程序员"></a> 第三阶段：高级阶段 （高级 PHP 程序员）</h2>
<p><strong>重点</strong>：除了基本的 LNMP 程序，还能够在某个方向或领域有深入学习。（纵深维度发展）</p>
<p><strong>目标</strong>：除了能够完成基本的 PHP 业务开发，还能够解决大部分深入复杂的技术问题，并且可以独立设计完成中大型的系统设计和开发工作；自己能够独立 hold 深入某个技术方向，在这块比较专业。（比如在 MySQL、Nginx、PHP、Redis 等等任一方向深入研究）</p>
<h3 id="1-linux-2"><a class="markdownIt-Anchor" href="#1-linux-2"></a> 1. Linux：</h3>
<p>除了第二阶段的能力，在 Linux 下面除了常规的操作和性能监控跟踪，还能够使用很多高级复杂的命令完成工作（watch/tcpdump/starce/ldd/ar 等)；在 shell 脚本方面，已经能够编写比较复杂的 shell 脚本（超过 500 行）来协助完成很多包括备份、自动化处理、监控等工作的 shell；对 awk/sed/perl 等应用已经如火纯青，能够随意操作控制处理文本统计分析各种复杂格式的数据；对 Linux 内部机制有一些了解，对内核模块加载，启动错误处理等等有个基本的处理；同时对一些其他相关的东西也了解，比如 NFS、磁盘管理等等；</p>
<h3 id="2-nginx-2"><a class="markdownIt-Anchor" href="#2-nginx-2"></a> 2. Nginx:</h3>
<p>在第二阶段的基础上面，已经能够把 Nginx 操作的很熟练，能够对 Nginx 进行更深入的运维工作，比如监控、性能优化，复杂问题处理等等；看个人兴趣，更多方面可以考虑侧重在关于 Nginx 工作原理部分的深入学习，主要表现在阅读源码开始，比如具体的 master/worker 工作机制，Nginx 内部的事件处理，内存管理等等；同时可以学习 Nginx 扩展的开发，可以定制一些自己私有的扩展；同时可以对 Nginx+Lua 有一定程度的了解，看看是否可以结合应用出更好模式；这个阶段的要求是对 Nginx 原理的深入理解，可以考虑成为 Nginx 方向的深入专业者。</p>
<h3 id="3-mysqlmongodb-2"><a class="markdownIt-Anchor" href="#3-mysqlmongodb-2"></a> 3. MySQL/MongoDB：</h3>
<p>在第二阶段的基础上面，在 MySQL 应用方面，除了之前的基本 SQL 优化，还能够在完成一些复杂操作，比如大批量数据的导入导出，线上大批量数据的更改表结构或者增删索引字段等等高危操作；除了安装配置，已经能够处理更多复杂的 MySQL 的问题，比如各种问题的追查，主从同步延迟问题的解决、跨机房同步数据方案、MySQL 高可用架构等都有涉及了解；对 MySQL 应用层面，对 MySQL 的核心关键技术比较熟悉，比如事务机制（隔离级别、锁等）、对触发器、分区等技术有一定了解和应用；对 MySQL 性能方面，有包括磁盘优化（SAS 迁移到 SSD）、服务器优化（内存、服务器本身配置）、除了二阶段的其他核心性能优化选项（innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout 等）、连接池软件选择应用，对 show *（show status/show profile）类的操作语句有深入了解，能够完成大部分的性能问题追查；MySQL 备份技术的深入熟悉，包括灾备还原、对 Binlog 的深入理解，冷热备份，多 IDC 备份等；在 MySQL 原理方面，有更多了解，比如对 MySQL 的工作机制开始阅读部分源码，比如对主从同步（复制）技术的源码学习，或者对某个存储引擎（MyISAM/Innodb/TokuDB）等等的源码学习理解，如果条件允许，可以参考 CSV 引擎开发自己简单的存储引擎来保存一些数据，增强对 MySQL 的理解；在这个过程，如果自己有兴趣，也可以考虑往 DBA 方向发展。MongoDB 层面，可以考虑比如说在写少读多的情况开始在线上应用 MongoDB，或者是做一些线上的数据分析处理的操作，具体场景可以按照工作来，不过核心是要更好的深入理解 RMDBS 和 NoSQL 的不同场景下面的应用，如果条件或者兴趣允许，可以开始深入学习一下 MongoDB 的工作机制。</p>
<h3 id="4-redismemcached-2"><a class="markdownIt-Anchor" href="#4-redismemcached-2"></a> 4. Redis/Memcached：</h3>
<p>在第二阶段的基础上面，能够更深入的应用和学习。因为 Memcached 不是特别复杂，建议可以把源码进行阅读，特别是内存管理部分，方便深入理解；Redis 部分，可以多做一些复杂的数据结构的应用（zset 来做排行榜排序操作/事务处理用来保证原子性在秒杀类场景应用之类的使用操作）；多涉及 aof 等同步机制的学习应用，设计一个高可用的 Redis 应用架构和集群；建议可以深入的学习一下 Redis 的源码，把在第二阶段积累的知识都可以应用上，特别可以阅读一下包括核心事件管理、内存管理、内部核心数据结构等充分学习了解一下。如果兴趣允许，可以成为一个 Redis 方面非常专业的使用者。</p>
<h3 id="5-php-2"><a class="markdownIt-Anchor" href="#5-php-2"></a> 5. PHP：</h3>
<p>作为基础核心技能，我们在第二阶段的基础上面，需要有更深入的学习和应用。从基本代码应用上面来说，能够解决在 PHP 开发中遇到 95%的问题，了解大部分 PHP 的技巧；对大部分的 PHP 框架能够迅速在一天内上手使用，并且了解各个主流 PHP 框架的优缺点，能够迅速方便项目开发中做技术选型；在配置方面，除了常规第二阶段会的知识，会了解一些比较偏门的配置选项（php auto_prepend_file/auto_append_file），包括扩展中的一些复杂高级配置和原理（比如 memcached 扩展配置中的 memcache.hash_strategy、apc 扩展配置中的 apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection 之类的）；对 php 的工作机制比较了解，包括 php-fpm 工作机制（比如 php-fpm 在不同配置机器下面开启进程数量计算以及原理），对 zend 引擎有基本熟悉（vm/gc/stream 处理），阅读过基本的 PHP 内核源码（或者阅读过相关文章），对 PHP 内部机制的大部分核心数据结构（基础类型/Array/Object）实现有了解，对于核心基础结构（zval/hashtable/gc）有深入学习了解；能够进行基本的 PHP 扩展开发，了解一些扩展开发的中高级知识（minit/rinit 等），熟悉 php 跟 apache/nginx 不同的通信交互方式细节（mod_php/fastcgi）；除了开发 PHP 扩展，可以考虑学习开发 Zend 扩展，从更底层去了解 PHP。</p>
<h3 id="6-cc-2"><a class="markdownIt-Anchor" href="#6-cc-2"></a> 6. C/C++：</h3>
<p>在第二阶段基础上面，能够在 C/C<ins>语言方面有更深入的学习了解，能够完成中小型 C/C</ins>系统的开发工作；除了基本第二阶段的基础 C/C<ins>语法和数据结构，也能够学习一些特殊数据结构（b-tree/rb-tree/skiplist/lsm-tree/trie-tree 等）方便在特殊工作中需求；在系统编程方面，熟悉多进程、多线程编程；多进程情况下面了解大部分多进程之间的通信方式，能够灵活选择通信方式（共享内存/信号量/管道等）；多线程编程能够良好的解决锁冲突问题，并且能够进行多线程程序的开发调试工作；同时对网络编程比较熟悉，了解多进程模型/多线程模型/异步网络 IO 模型的差别和选型，熟悉不同异步网络 IO 模型的原理和差异（select/poll/epoll/iocp 等），并且熟悉常见的异步框架（ACE/ICE/libev/libevent/libuv/Boost.ASIO 等）和使用，如果闲暇也可以看看一些国产自己开发的库（比如 muduo）；同时能够设计好的高并发程序架构（leader-follow/master-worker 等）；了解大部分 C/C</ins>后端 Server 开发中的问题（内存管理、日志打印、高并发、前后端通信协议、服务监控），知道各个后端服务 RPC 通信问题（struct/http/thirft/protobuf 等）；能够更熟络的使用 GCC 和 GDB 来开发编译调试程序，在线上程序 core 掉后能够迅速追查跟踪解决问题；通用模块开发方面，可以积累或者开发一些通用的工具或库（比如异步网络框架、日志库、内存池、线程池等），不过开发后是否应用要谨慎，省的埋坑去追 bug；</p>
<h3 id="7-前端-2"><a class="markdownIt-Anchor" href="#7-前端-2"></a> 7. 前端：</h3>
<p>深入了解 HTTP 协议（包括各个细致协议特殊协议代码和背后原因，比如 302 静态文件缓存了，502 是 nginx 后面 php 挂了之类的）；除了之前的前端方面的各种框架应用整合能力，前端方面的学习如果有兴趣可以更深入，表现形式是，可以自己开发一些类似 jQuery 的前端框架，或者开发一个富文本编辑器之类的比较琐碎考验 JavaScript 功力；</p>
<h3 id="8-其他领域语言学习"><a class="markdownIt-Anchor" href="#8-其他领域语言学习"></a> 8. 其他领域语言学习：</h3>
<p>在基础的 PHP/C/C<ins>语言方面有基本积累，建议在当前阶段可以尝试学习不同的编程语言，看个人兴趣爱好，脚本类语言可以学学 Python/Ruby 之类的，函数式编程语言可以试试 Lisp/Haskell/Scala/Erlang 之类的，静态语言可以试试 Java/Golang，数据统计分析可以了解了解 R 语言，如果想换个视角做后端业务，可以试试 Node.js 还有前面提到的跟 Nginx 结合的 Nginx_Lua 等。学习不同的语言主要是提升自己的视野和解决问题手段的差异，比如会了解除了进程/线程，还有轻量级协程；比如在跨机器通信场景下面，Erlang 的解决方案简单的惊人；比如在不想选择 C/C</ins>的情况下，还有类似高效的 Erlang/Golang 可用等等；主要是提升视野。</p>
<h3 id="9-其他专业方向学习"><a class="markdownIt-Anchor" href="#9-其他专业方向学习"></a> 9. 其他专业方向学习：</h3>
<p>在本阶段里面，会除了基本的 LNMP 技能之外，会考虑一些其他领域知识的学习，这些都是可以的，看个人兴趣和长期的目标方向。目前情况能够选择的领域比较多，比如、云计算（分布式存储、分布式计算、虚拟机等），机器学习（数据挖掘、模式识别等，应用到统计、个性化推荐），自然语言处理（中文分词等），搜索引擎技术、图形图像、语音识别等等。除了这些高大上的，也有很多偏工程方面可以学习的地方，比如高性能系统、移动开发（Android/IOS）、计算机安全、嵌入式系统、硬件等方向。</p>
<h3 id="10-系统设计"><a class="markdownIt-Anchor" href="#10-系统设计"></a> 10. 系统设计：</h3>
<p>系统设计在第二阶段的基础之上，能够应用掌握的经验技能，设计出比较复杂的中大型系统，能够解决大部分线上的各种复杂系统的问题，完成类似 浏览器 -&gt; CDN -&gt; 负载均衡 -&gt;接入层 -&gt; Nginx+PHP -&gt; 业务缓存 -&gt; 数据库 -&gt; 各路复杂后端 RPC 交互（存储后端、逻辑后端、反作弊后端、外部服务） -&gt; 更多后端 酱紫的复杂业务；能够支撑每天数千万到数亿流量网站的正常开发维护工作。</p>
<h2 id="第四阶段架构阶段-架构师"><a class="markdownIt-Anchor" href="#第四阶段架构阶段-架构师"></a> 第四阶段：架构阶段 （架构师）</h2>
<p>ps: 暂时不展开讨论，等下次专门撰文来描述补充本部分内容</p>
<h2 id="第五阶段专家阶段方向领域专家"><a class="markdownIt-Anchor" href="#第五阶段专家阶段方向领域专家"></a> 第五阶段：专家阶段（方向领域专家）</h2>
<p>ps：高大上，这块不展开讨论 <sup>_</sup></p>
<h2 id="第六阶段科学家阶段"><a class="markdownIt-Anchor" href="#第六阶段科学家阶段"></a> 第六阶段：科学家阶段</h2>
<p>ps：高大上，这块不展开讨论 <sup>_</sup></p>

		</div>

		
			<div class="art-item-footer">
					
						<span class="art-item-left"><i class="icon icon-chevron-thin-left"></i> <a href="/2018/05/08/movie-llqj/" rel="prev" title="电影《绿里奇迹》">
							电影《绿里奇迹》
						</a>上一篇文章</span>
					
					
						<span class="art-item-right">下一篇文章：<a href="/2018/05/05/phpstorm-xdebug/" rel="next"  title="PHPStorm 配置 xdebug(phpStudy/wamp)">
							PHPStorm 配置 xdebug(phpStudy/wamp)
						</a><i class="icon icon-chevron-thin-right"></i></span>
					
			</div>
		

		
			

    <div class="recommended_posts">
        <h3>推荐文章</h3>
        <ul>
            
                <li><a href="http://blog.i2arch.tech/2018/05/08/php-booklist/">PHP书单</a></li>
            
                <li><a href="http://blog.i2arch.tech/2018/05/08/movie-llqj/">电影《绿里奇迹》</a></li>
            
                <li><a href="http://blog.i2arch.tech/2018/05/05/phpstorm-xdebug/">PHPStorm 配置 xdebug(phpStudy/wamp)</a></li>
            
                <li><a href="http://blog.i2arch.tech/2018/05/01/hello-world/">Hexo+Github搭建个人博客</a></li>
            
        </ul>
    </div>


		
	</section>

	

</article>
<script>
	window.subData = {
		title: '【转】PHP发展路径',
		tools: true
	}
</script>

      </div>

      <!-- 右侧边栏组件 -->
      <aside class='l_side'>
        
      </aside>

      <div class="gotop">
          
    <a href='javascript:void(0)'>
        <i class="icon icon-arrow_upward flat-box">
        </i>
    </a>

      </div>
      <script>setLoadingBarProgress(60);</script>
    </div>
  </div>
  <footer id="footer" class="clearfix">

	<div class="social-wrapper">
  	
      
        <a href="https://github.com/zqunor" class="social github"
          target="_blank" rel="external">
          <span class="icon icon-github"></span>
        </a>
      
        <a href="https://www.cnblogs.com/zqunor" class="social zhihu"
          target="_blank" rel="external">
          <span class="icon icon-zhihu"></span>
        </a>
      
        <a href="/atom.xml" class="social rss"
          target="_blank" rel="external">
          <span class="icon icon-rss"></span>
        </a>
      
    
  </div>
  <div>Theme <a href='https://github.com/stkevintan/hexo-theme-material-flow' class="codename">MaterialFlow</a>  Powered by<a href="https://blog.i2arch.tech/" target="_blank">程序小工</a>.</div>

</footer>

  <script>setLoadingBarProgress(80);</script>
  

    <script src="//apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src='//cdn.bootcss.com/node-waves/0.7.5/waves.min.js'></script>
    <script src="//cdn.bootcss.com/scrollReveal.js/3.3.2/scrollreveal.min.js"></script>
    <script src="/js/jquery.fitvids.js"></script>
      <script>
        var GOOGLE_CUSTOM_SEARCH_API_KEY = "";
        var GOOGLE_CUSTOM_SEARCH_ENGINE_ID = "";
        var ALGOLIA_API_KEY = "";
        var ALGOLIA_APP_ID = "";
        var ALGOLIA_INDEX_NAME = "";
        var AZURE_SERVICE_NAME = "";
        var AZURE_INDEX_NAME = "";
        var AZURE_QUERY_KEY = "";
        var BAIDU_API_ID = "fca5b83cf69f752ddc96a61ef64a3659";
        var SEARCH_SERVICE = "hexo";
        var ROOT = "/" || "/";
        if (!ROOT.endsWith('/')) ROOT += '/';
      </script>
      <script src="/js/search.js"></script>
        <script src="/js/app.js"></script>
  <script>setLoadingBarProgress(100);</script>
</body>
</html>
